﻿$(function () { //document.ready()
    var $chkResp = $('#add-responsable'), $btnSend = $('#btnNuevaMatricula'), $frmGral = $('#form-matricular'),
        $frmPadr = $('#form-data-padre'), $frmMadr = $('#form-data-madre'), $frmResp = $('#form-data-responsable');

    /*JS para Mostrar/Ocultar el panel del Responsable*/
    $chkResp.on('change', function () {
        if ($chkResp.prop("checked")) $frmResp.show(); else $frmResp.hide();
    });

    /*JS para las validaciones, pre-envio del formulario*/
    $btnSend.on('click', function (event) {
        event.preventDefault();
        var bFormPadre = false, bFormMadre = false,
            padreFallecido = $("input[name='fallecio-padre']:checked").val(),
            madreFallecido = $("input[name='fallecio-madre']:checked").val(),
            respoPadre = $('#responsable-padre').prop("checked"),
            respoMadre = $('#responsable-madre').prop("checked"),
            respoAdd = $('#add-responsable').prop("checked"),
            respParentesco = $('#PARENTEZCO').val();

        /*STEP 1: Verificar que los datos del Formulario Gral. sean validos*/
        if (!$frmGral.isValid()) return;

        /*STEP 2: Analizamos si el formulario del padre y madre se ha llenado algun campo, si se ha llenado validamos el formulario*/
        $.each($frmPadr.find('input, textarea'), function (i, inp) { if (inp.value) { bFormPadre = true; return false; } });
        $.each($frmMadr.find('input, textarea'), function (i, inp) { if (inp.value) { bFormMadre = true; return false; } });
        if ((!bFormPadre) && (!bFormMadre)) {
            $.addNotificacion({ titulo: 'Formulario Incompleto', msj: 'Debe rellenar los datos del padre y de la madre del alumno para poder continuar; a excepción que cumpla alguna de las indicaciones y solo sea necesario llenar los datos del padre o solo de la madre.', icono: 'FORM_INCOMPLETE' });
            return
        }

        /*STEP 3: Ahora que ya identificamos si el Form del Padre y/o la madre estan habilitados, realizamos la validacion de campos*/
        if (((bFormPadre) && (!$frmPadr.isValid())) || ((bFormMadre) && (!$frmMadr.isValid()))) return;

        /*STEP 4: Verificamos si alguno de los padres se ha habilitado como responsable, y si esta habilitado el responsable extra*/
        if (((bFormPadre) && (!respoPadre) && (!respoAdd) && (bFormMadre) && (!respoMadre)) ||
            ((bFormPadre) && (!respoPadre) && (!respoAdd) && (!bFormMadre) && (!respoMadre)) ||
            ((bFormPadre) && (!respoPadre) && (!respoAdd) && (!bFormMadre) && (respoMadre)) ||
            ((bFormPadre) && (!respoPadre) && (!respoAdd) && (bFormMadre) && (!respoMadre)) ||
            ((!bFormPadre) && (!respoPadre) && (!respoAdd) && (bFormMadre) && (!respoMadre)) ||
            ((!bFormPadre) && (respoPadre) && (!respoAdd) && (bFormMadre) && (!respoMadre))) {
            $.addNotificacion({ titulo: 'Formulario Incompleto', msj: 'No ha definido quien o quienes seran los responsables del alumno. Debera seleccionar al menos uno, ya sea el padre, madre o añadiendo un nuevo responsable.', icono: 'FORM_INCOMPLETE' });
            return
        }

        /*STEP 5: Verificamos si esta activo, el responsable añadido, y si es asi validamos sus datos*/
        if ((respoAdd) && (!$frmResp.isValid())) return;

        /*STEP 6: Hacemos un FIX de la información si el padre o la madre se declara como muerta*/
        var dataPadre = null, dataMadre = null, dataResp = null;
        if (bFormPadre) dataPadre = $frmPadr.serializeObject('padre-');
        if (bFormMadre) dataMadre = $frmMadr.serializeObject('madre-');
        if (respoAdd) dataResp = $frmResp.serializeObject('responsable-');
        if (padreFallecido == 'True') dataPadre = fixDataArray(dataPadre);
        if (madreFallecido == 'True') dataMadre = fixDataArray(dataMadre);

        /*STEP 7: Una vez hemos comprobado que todos los datos son válidos, procedemos a preparar los datos para ser enviados*/
        var nuevaSolicitudViewModel = {
            Matricula: $frmGral.serializeObject(),
            Padre: {
                Responsable: dataPadre,
                IsFormActivo: bFormPadre,
                IsResponsable: respoPadre,
                IsFallecido: padreFallecido,
                Parentesco: 'PA'
            },
            Madre: {
                Responsable: dataMadre,
                IsFormActivo: bFormMadre,
                IsResponsable: respoMadre,
                IsFallecido: madreFallecido,
                Parentesco: 'MA'
            },
            Responsable: {
                Responsable: dataResp,
                IsFormActivo: true,
                IsResponsable: respoAdd,
                IsFallecido: false,
                Parentesco: respParentesco
            }
        }

        $frmGral.sendForm({
            overwriteData: JSON.stringify(nuevaSolicitudViewModel),
            contentType: 'application/json; charset=utf-8'
        });
    });

});

function fixDataArray(array) {
    array['DUI'] = '00000000-0';
    array['TELEFONO'] = '2000-0000';
    array['PROFESION'] = 'N/A';
    array['CORREO_ELECTRONICO'] = 'na@na.na';
    array['LUGAR_TRABAJO'] = 'N/A';
    array['DIRECCION_TRABAJO'] = 'N/A';
    return array;
}